home *** CD-ROM | disk | FTP | other *** search
/ Aminet 34 / Aminet 34 (2000)(Schatztruhe)[!][Dec 1999].iso / Aminet / dev / basic / SocketFuncs.lha / v1.1 / SocketIncs.bb2 next >
Encoding:
Text File  |  1999-10-10  |  11.7 KB  |  785 lines

  1. ;----------------------------------------------------------------------------
  2. ; ASM Function calls for bsdsocket.library functions v1.1 by Roger Light 1999.
  3. ; Thanks to Anton Reinauer for help with optimising the ASM.
  4. ;
  5. ; Only functions used in Paul Burkey's TCPFuncs.bb2 have been tested (and those
  6. ; not much...)
  7. ; Use at your own risk!
  8. ;
  9. ; Allows non-restrictive use of bsdsocket.library - ie bsdsocket.library
  10. ; doesn't have to be open on your program startup.
  11. ;
  12. ; See MiamiSDK from Nordic Global for function descriptions.
  13. ;
  14. ; Function names change as follows:
  15. ;
  16. ; socket_() changes to socket{}
  17. ;
  18. ; I recommend that you extract only the functions that you need, to save on
  19. ; executable size. If you do use any of these functions, please mention me
  20. ; in your docs ;)
  21. ;
  22. ; Contact me at rogerlight@mindless.com
  23. ;
  24. ;
  25. ; IMPORTANT!
  26. ; ==========
  27. ;
  28. ; The use of these functions has become a little bit more complicated with the
  29. ; advent of v1.1. This new version eliminates the PutReg and GetReg calls and
  30. ; therefore should be a lot quicker. However, you will probably have to include
  31. ; these functions directly into your code rather than using Include SocketIncs.bb2
  32. ; This is because of the way the PutReg and GetReg calls are eliminated.
  33. ; When you open bsdsocket.library, you need to include the following code:
  34.  
  35. ; SocketBase.l=openlibrary_("bsdsocket.library",0)
  36. ; if SocketBase.l
  37. ;   GetReg a0,SocketBase.l        ; put SocketVase.l in a0
  38. ;   MOVE.l a0,bsdsocketaddress    ;  store the bsdsocket.lib address
  39. ; else
  40. ;    ; lib not opened
  41. ; endif
  42. ;
  43. ; And then at the very end of your code:
  44. ;
  45. ; bsdsocketaddress:
  46. ;   Dc.l 0            ; the address is stored here.
  47. ;
  48. ;
  49. ; If would probably not be a bad idea to do
  50. ;
  51. ; MOVE.l 0,bsdsocketaddress
  52. ;
  53. ; when you close the library as well.
  54.  
  55.  
  56. ;----------------------------------------------------------------------------
  57.  
  58. Function.l socket{domain.l, type_.l, protocol.l}
  59. ;                   d0        d1        d2
  60.  
  61.   MOVE.l a6,-(a7)
  62.   MOVE.l bsdsocketaddress,a6
  63.   JSR -30(a6)
  64.  
  65.   MOVE.l (a7)+,a6
  66.   AsmExit
  67. End Function
  68.  
  69. ;----
  70.  
  71. Function.l bind{s.l, *name.l, namelen.l}
  72. ;                d0     a0      d1
  73.  
  74.   MOVE.l a6,-(a7)
  75.   MOVE.l bsdsocketaddress,a6
  76.                       ; s.l in d0
  77.   MOVE.l d1,a0        ; *name.l in a0
  78.   MOVE.l d2,d1        ; namelen.l in d1
  79.  
  80.   JSR -36(a6)
  81.  
  82.   MOVE.l (a7)+,a6
  83.   AsmExit
  84. End Function
  85.  
  86. ;----
  87.  
  88. Function.l listen{s.l, backlog.l}
  89. ;                  d0     d1
  90.  
  91.   MOVE.l a6,-(a7)
  92.   MOVE.l bsdsocketaddress,a6
  93.  
  94.   JSR -42(a6)
  95.  
  96.   MOVE.l (a7)+,a6
  97.   AsmExit
  98. End Function
  99.  
  100. ;----
  101.  
  102. Function.l accept{s.l,  *addr_.l, *addrlen.l}
  103. ;                  d0     a0          a1
  104.  
  105.   MOVE.l a6,-(a7)
  106.   MOVE.l bsdsocketaddress,a6
  107.                       ; s.l in d0
  108.   MOVE.l d1,a0        ; *addr_.l in a0
  109.   MOVE.l d2,a1        ; *addrlen.l in a1
  110.  
  111.   JSR -48(a6)
  112.  
  113.   MOVE.l (a7)+,a6
  114.   AsmExit
  115. End Function
  116.  
  117. ;----
  118.  
  119. Function.l connect{s.l, *name.l, namelen.l}
  120. ;                   d0    a0        d1
  121.  
  122.   MOVE.l a6,-(a7)
  123.   MOVE.l bsdsocketaddress,a6
  124.  
  125.   MOVE.l d1,a0
  126.   MOVE.l d2,d1
  127.  
  128.   JSR -54(a6)
  129.  
  130.   MOVE.l (a7)+,a6
  131.   AsmExit
  132. End Function
  133.  
  134. ;----
  135.  
  136. Function.l sendto{s.l, *buf.l, len_.l, flags.l, *to_.l, tolen.l}
  137. ;                 d0     a0      d1      d2       a1      d3
  138.  
  139.   MOVE.l a6,-(a7)
  140.   MOVE.l bsdsocketaddress,a6
  141.  
  142.   MOVE.l d1,a0
  143.   MOVE.l d2,d1
  144.   MOVE.l d3,d2
  145.   MOVE.l d4,a1
  146.   MOVE.l d5,d3
  147.  
  148.   JSR -60(a6)
  149.  
  150.   MOVE.l (a7)+,a6
  151.   AsmExit
  152. End Function
  153.  
  154. ;----
  155.  
  156. Function.l send{s.l, *buf.l, len_.l, flags.l}
  157. ;                d0    a0      d1      d2
  158.  
  159.   MOVE.l a6,-(a7)
  160.   MOVE.l bsdsocketaddress,a6
  161.  
  162.   MOVE.l d1,a0
  163.   MOVE.l d2,d1
  164.   MOVE.l d3,d2
  165.  
  166.   JSR -66(a6)
  167.  
  168.   MOVE.l (a7)+,a6
  169.   AsmExit
  170. End Function
  171.  
  172. ;----
  173.  
  174. Function.l recvfrom{s.l, *buf.l, len_.l, flags.l, *addr_.l, *addrlen.l}
  175. ;                    d0    a0      d1      d2        a1         a2
  176.  
  177.   MOVE.l a6,-(a7)
  178.   MOVE.l bsdsocketaddress,a6
  179.  
  180.   MOVE.l d1,a0
  181.   MOVE.l d2,d1
  182.   MOVE.l d3,d2
  183.   MOVE.l d4,a1
  184.   MOVE.l d5,a2
  185.  
  186.   JSR -72(a6)
  187.  
  188.   MOVE.l (a7)+,a6
  189.   AsmExit
  190. End Function
  191.  
  192. ;----
  193.  
  194. Function.l recv{s.l, *buf.l, len_.l, flags.l}
  195. ;                d0    a0      d1      d2
  196.  
  197.   MOVE.l a6,-(a7)
  198.   MOVE.l bsdsocketaddress,a6
  199.  
  200.   MOVE.l d1,a0
  201.   MOVE.l d2,d1
  202.   MOVE.l d3,d2
  203.  
  204.   JSR -78(a6)
  205.  
  206.   MOVE.l (a7)+,a6
  207.   AsmExit
  208. End Function
  209.  
  210. ;----
  211.  
  212. Function.l shutdown{s.l, how.l}
  213. ;                    d0   d1
  214.  
  215.   MOVE.l a6,-(a7)
  216.   MOVE.l bsdsocketaddress,a6
  217.  
  218.   JSR -84(a6)
  219.  
  220.   MOVE.l (a7)+,a6
  221.   AsmExit
  222. End Function
  223.  
  224. ;----
  225.  
  226. Function.l setsockopt{s.l, level.l, optname.l, *optval.l, optlen.l}
  227. ;                      d0     d1       d2         a0        d3
  228.  
  229.   MOVE.l a6,-(a7)
  230.   MOVE.l bsdsocketaddress,a6
  231.  
  232.   MOVE.l d3,a0
  233.   MOVE.l d4,d3
  234.  
  235.   JSR -90(a6)
  236.  
  237.   MOVE.l (a7)+,a6
  238.   AsmExit
  239. End Function
  240.  
  241. ;----
  242.  
  243. Function.l getsockopt{s.l, level.l, optname.l, *optval.l, *optlen.l}
  244. ;                      d0     d1      d2          a0          a1
  245.  
  246.   MOVE.l a6,-(a7)
  247.   MOVE.l bsdsocketaddress,a6
  248.  
  249.   MOVE.l d3,a0
  250.   MOVE.l d4,a1
  251.  
  252.   JSR -96(a6)
  253.  
  254.   MOVE.l (a7)+,a6
  255.   AsmExit
  256. End Function
  257.  
  258. ;----
  259.  
  260. Function.l getsockname{s.l, *name.l, *namelen.l}
  261. ;                       d0    a0        a1
  262.  
  263.   MOVE.l a6,-(a7)
  264.   MOVE.l bsdsocketaddress,a6
  265.  
  266.   MOVE.l d1,a0
  267.   MOVE.l d2,a1
  268.  
  269.   JSR -102(a6)
  270.  
  271.   MOVE.l (a7)+,a6
  272.   AsmExit
  273. End Function
  274.  
  275. ;----
  276.  
  277. Function.l getpeername{s.l, *name.l, *namelen.l}
  278. ;                       d0    a0        a1
  279.  
  280.   MOVE.l a6,-(a7)
  281.   MOVE.l bsdsocketaddress,a6
  282.  
  283.   MOVE.l d1,a0
  284.   MOVE.l d2,a1
  285.  
  286.   JSR -108(a6)
  287.  
  288.   MOVE.l (a7)+,a6
  289.   AsmExit
  290. End Function
  291.  
  292. ;----
  293.  
  294. Function.l IoctlSocket{s.l, req.l, *argp.l}
  295. ;                       d0    d1      a0
  296.  
  297.   MOVE.l a6,-(a7)
  298.   MOVE.l bsdsocketaddress,a6
  299.  
  300.   MOVE.l d2,a0
  301.  
  302.   JSR -114(a6)
  303.  
  304.   MOVE.l (a7)+,a6
  305.   AsmExit
  306. End Function
  307.  
  308. ;----
  309.  
  310. Function.l CloseSocket{s.l}
  311. ;                       d0
  312.  
  313.   MOVE.l a6,-(a7)
  314.   MOVE.l bsdsocketaddress,a6
  315.                         ; s.l in d0
  316.   JSR -120(a6)
  317.  
  318.   MOVE.l (a7)+,a6
  319.   AsmExit
  320. End Function
  321.  
  322. ;----
  323.  
  324. Function.l WaitSelect{nfds.l, *readfds.l, *writefds.l, *exceptfds.l, *timeout.l, *signal.s}
  325. ;                       d0        a0          a1            a2           a3         d1
  326.  
  327.   MOVE.l a6,-(a7)
  328.   MOVE.l bsdsocketaddress,a6
  329.  
  330.   MOVE.l d1,a0
  331.   MOVE.l d2,a1
  332.   MOVE.l d3,a2
  333.   MOVE.l d4,a3
  334.   MOVE.l d5,d1
  335.  
  336.   JSR -126(a6)
  337.  
  338.   MOVE.l (a7)+,a6
  339.   AsmExit
  340. End Function
  341.  
  342. ;----
  343.  
  344. Function.l SetSocketSignals{intmask.l, iomask.l, urgentmask.l}
  345. ;                             d0          d1          d2
  346.  
  347.   MOVE.l a6,-(a7)
  348.   MOVE.l bsdsocketaddress,a6
  349.  
  350.   JSR -132(a6)
  351.  
  352.   MOVE.l (a7)+,a6
  353.   AsmExit
  354. End Function
  355.  
  356. ;----
  357.  
  358. Function.l getdtablesize{}
  359. ;                       void
  360.  
  361.   MOVE.l a6,-(a7)
  362.   MOVE.l bsdsocketaddress,a6
  363.  
  364.   JSR -138(a6)
  365.  
  366.   MOVE.l (a7)+,a6
  367.   AsmExit
  368. End Function
  369.  
  370. ;----
  371.  
  372. Function.l ObtainSocket{id.l, domain.l, type_.l, protocol.l}
  373. ;                        d0     d1        d2        d3
  374.  
  375.   MOVE.l a6,-(a7)
  376.   MOVE.l bsdsocketaddress,a6
  377.  
  378.   JSR -144(a6)
  379.  
  380.   MOVE.l (a7)+,a6
  381.   AsmExit
  382. End Function
  383.  
  384. ;----
  385.  
  386. Function.l ReleaseSocket{s.l, id.l}
  387. ;                         d0   d1
  388.  
  389.   MOVE.l a6,-(a7)
  390.   MOVE.l bsdsocketaddress,a6
  391.  
  392.   JSR -150(a6)
  393.  
  394.   MOVE.l (a7)+,a6
  395.   AsmExit
  396. End Function
  397.  
  398. ;----
  399.  
  400. Function.l ReleaseCopyOfSocket{s.l, id.l}
  401. ;                               d0    d1
  402.  
  403.   MOVE.l a6,-(a7)
  404.   MOVE.l bsdsocketaddress,a6
  405.  
  406.   JSR -156(a6)
  407.  
  408.   MOVE.l (a7)+,a6
  409.   AsmExit
  410. End Function
  411.  
  412. ;----
  413.  
  414. Function.l Errno{}
  415. ;                void
  416.  
  417.   MOVE.l a6,-(a7)
  418.   MOVE.l bsdsocketaddress,a6
  419.  
  420.   JSR -162(a6)
  421.  
  422.   MOVE.l (a7)+,a6
  423.   AsmExit
  424. End Function
  425.  
  426. ;----
  427.  
  428. Function.l SetErrnoPtr{*errnop.l, size.l}
  429. ;                         a0        d0
  430.  
  431.   MOVE.l a6,-(a7)
  432.   MOVE.l bsdsocketaddress,a6
  433.  
  434.   MOVE.l d0,a0
  435.   MOVE.l d1,d0
  436.  
  437.   JSR -168(a6)
  438.  
  439.   MOVE.l (a7)+,a6
  440.   AsmExit
  441. End Function
  442.  
  443. ;----
  444.  
  445. Function.l Inet_NtoA{ip.l}
  446. ;                     d0
  447.  
  448.   MOVE.l a6,-(a7)
  449.   MOVE.l bsdsocketaddress,a6
  450.  
  451.   JSR -174(a6)
  452.  
  453.   MOVE.l (a7)+,a6
  454.   AsmExit
  455. End Function
  456.  
  457. ;----
  458.  
  459. Function.l inet_addr{*cp.l}
  460. ;                      a0
  461.  
  462.   MOVE.l a6,-(a7)
  463.   MOVE.l bsdsocketaddress,a6
  464.  
  465.   MOVE.l d0,a0
  466.  
  467.   JSR -180(a6)
  468.  
  469.   MOVE.l (a7)+,a6
  470.   AsmExit
  471. End Function
  472.  
  473. ;----
  474.  
  475. Function.l Inet_LnaOf{in.l}
  476. ;                      d0
  477.  
  478.   MOVE.l a6,-(a7)
  479.   MOVE.l bsdsocketaddress,a6
  480.  
  481.   JSR -186(a6)
  482.  
  483.   MOVE.l (a7)+,a6
  484.   AsmExit
  485. End Function
  486.  
  487. ;----
  488.  
  489. Function.l Inet_NetOf{in.l}
  490. ;                      d0
  491.  
  492.   MOVE.l a6,-(a7)
  493.   MOVE.l bsdsocketaddress,a6
  494.  
  495.   JSR -192(a6)
  496.  
  497.   MOVE.l (a7)+,a6
  498.   AsmExit
  499. End Function
  500.  
  501. ;----
  502.  
  503. Function.l Inet_MakeAddr{net.l, host.l}
  504. ;                         d0      d1
  505.  
  506.   MOVE.l a6,-(a7)
  507.   MOVE.l bsdsocketaddress,a6
  508.  
  509.   JSR -198(a6)
  510.  
  511.   MOVE.l (a7)+,a6
  512.   AsmExit
  513. End Function
  514.  
  515. ;----
  516.  
  517. Function.l inet_network{*cp.l}
  518. ;                        a0
  519.  
  520.   MOVE.l a6,-(a7)
  521.   MOVE.l bsdsocketaddress,a6
  522.  
  523.   MOVE.l d0,a0
  524.  
  525.   JSR -204(a6)
  526.  
  527.   MOVE.l (a7)+,a6
  528.   AsmExit
  529. End Function
  530.  
  531. ;----
  532.  
  533. Function.l gethostbyname{*name.l}
  534. ;                           a0
  535.  
  536.   MOVE.l a6,-(a7)
  537.   MOVE.l bsdsocketaddress,a6
  538.  
  539.   MOVE.l d0,a0
  540.  
  541.   JSR -210(a6)
  542.  
  543.   MOVE.l (a7)+,a6
  544.   AsmExit
  545. End Function
  546.  
  547. ;----
  548.  
  549. Function.l gethostbyaddr{*addr_.l, len_.l, type_.l}
  550. ;                           a0        d0      d1
  551.  
  552.   MOVE.l a6,-(a7)
  553.   MOVE.l bsdsocketaddress,a6
  554.  
  555.   MOVE.l d0,a0
  556.   MOVE.l d1,d0
  557.   MOVE.l d2,d1
  558.  
  559.   JSR -216(a6)
  560.  
  561.   MOVE.l (a7)+,a6
  562.   AsmExit
  563. End Function
  564.  
  565. ;----
  566.  
  567. Function.l getnetbyname{ *name.l}
  568. ;                          a0
  569.  
  570.   MOVE.l a6,-(a7)
  571.   MOVE.l bsdsocketaddress,a6
  572.  
  573.   MOVE.l d0,a0
  574.  
  575.   JSR -222(a6)
  576.  
  577.   MOVE.l (a7)+,a6
  578.   AsmExit
  579. End Function
  580.  
  581. ;----
  582.  
  583. Function.l getnetbyaddr{net.l, type_.l}
  584. ;                         d0      d1
  585.  
  586.   MOVE.l a6,-(a7)
  587.   MOVE.l bsdsocketaddress,a6
  588.  
  589.   JSR -228(a6)
  590.  
  591.   MOVE.l (a7)+,a6
  592.   AsmExit
  593. End Function
  594.  
  595. ;----
  596.  
  597. Function.l getservbyname{*name.l, *proto.l}
  598. ;                           a0        a1
  599.  
  600.   MOVE.l a6,-(a7)
  601.   MOVE.l bsdsocketaddress,a6
  602.  
  603.   MOVE.l d0,a0
  604.   MOVE.l d1,a1
  605.  
  606.   JSR -234(a6)
  607.  
  608.   MOVE.l (a7)+,a6
  609.   AsmExit
  610. End Function
  611.  
  612. ;----
  613.  
  614. Function.l getservbyport{port.l, *proto.l}
  615. ;                           d0      a0
  616.  
  617.   MOVE.l a6,-(a7)
  618.   MOVE.l bsdsocketaddress,a6
  619.  
  620.   MOVE.l d1,a0
  621.  
  622.   JSR -240(a6)
  623.  
  624.   MOVE.l (a7)+,a6
  625.   AsmExit
  626. End Function
  627.  
  628. ;----
  629.  
  630. Function.l getprotobyname{*name.l}
  631. ;                           a0
  632.  
  633.   MOVE.l a6,-(a7)
  634.   MOVE.l bsdsocketaddress,a6
  635.  
  636.   MOVE.l d0,a0
  637.  
  638.   JSR -246(a6)
  639.  
  640.   MOVE.l (a7)+,a6
  641.   AsmExit
  642. End Function
  643.  
  644. ;----
  645.  
  646. Function.l getprotobynumber{id.l}
  647. ;                            d0
  648.  
  649.   MOVE.l a6,-(a7)
  650.   MOVE.l bsdsocketaddress,a6
  651.  
  652.   JSR -252(a6)
  653.  
  654.   MOVE.l (a7)+,a6
  655.   AsmExit
  656. End Function
  657.  
  658. ;----
  659.  
  660. Function.l vsyslog{pri.l, *msg.l, args.l}
  661. ;                    d0     a0      a1
  662.  
  663.   MOVE.l a6,-(a7)
  664.   MOVE.l bsdsocketaddress,a6
  665.  
  666.   MOVE.l d1,a0
  667.   MOVE.l d2,a1
  668.  
  669.   JSR -258(a6)
  670.  
  671.   MOVE.l (a7)+,a6
  672.   AsmExit
  673. End Function
  674.  
  675. ;----
  676.  
  677. Function.l Dup2Socket{olds.l, news.l}
  678. ;                       d0      d1
  679.  
  680.   MOVE.l a6,-(a7)
  681.   MOVE.l bsdsocketaddress,a6
  682.  
  683.   JSR -264(a6)
  684.  
  685.   MOVE.l (a7)+,a6
  686.   AsmExit
  687. End Function
  688.  
  689. ;----
  690.  
  691. Function.l sendmsg{s.l, *msg.l, flags.l}
  692. ;                   d0    a0      d1
  693.  
  694.   MOVE.l a6,-(a7)
  695.   MOVE.l bsdsocketaddress,a6
  696.  
  697.   MOVE.l d1,a0
  698.   MOVE.l d2,d1
  699.  
  700.   JSR -270(a6)
  701.  
  702.   MOVE.l (a7)+,a6
  703.   AsmExit
  704. End Function
  705.  
  706. ;----
  707.  
  708. Function.l recvmsg{s.l, *msg.l, flags.l}
  709. ;                   d0    a0      d1
  710.  
  711.   MOVE.l a6,-(a7)
  712.   MOVE.l bsdsocketaddress,a6
  713.  
  714.   MOVE.l d1,a0
  715.   MOVE.l d2,d1
  716.  
  717.   JSR -276(a6)
  718.  
  719.   MOVE.l (a7)+,a6
  720.   AsmExit
  721. End Function
  722.  
  723. ;----
  724.  
  725. Function.l gethostname{*name.l, namelen.l}
  726. ;                         a0        d0
  727.  
  728.   MOVE.l a6,-(a7)
  729.   MOVE.l bsdsocketaddress,a6
  730.  
  731.   MOVE.l d0,a0
  732.   MOVE.l d1,d0
  733.  
  734.   JSR -282(a6)
  735.  
  736.   MOVE.l (a7)+,a6
  737.   AsmExit
  738. End Function
  739.  
  740. ;----
  741.  
  742. Function.l gethostid{}
  743. ;                   void
  744.  
  745.   MOVE.l a6,-(a7)
  746.   MOVE.l bsdsocketaddress,a6
  747.  
  748.   JSR -288(a6)
  749.  
  750.   MOVE.l (a7)+,a6
  751.   AsmExit
  752. End Function
  753.  
  754. ;----
  755.  
  756. Function.l SocketBaseTagList{*tags.l}
  757. ;                               a0
  758.  
  759.   MOVE.l a6,-(a7)
  760.   MOVE.l bsdsocketaddress,a6
  761.  
  762.   MOVE.l d0,a0
  763.  
  764.   JSR -294(a6)
  765.  
  766.   MOVE.l (a7)+,a6
  767.   AsmExit
  768. End Function
  769.  
  770. ;----
  771.  
  772. Function.l GetSocketEvents{*eventsp.l}
  773. ;                               a0
  774.  
  775.   MOVE.l a6,-(a7)
  776.   MOVE.l bsdsocketaddress,a6
  777.  
  778.   MOVE.l d0,a0
  779.  
  780.   JSR -300(a6)
  781.  
  782.   MOVE.l (a7)+,a6
  783.   AsmExit
  784. End Function
  785.